/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.cliente.descubridor.vista;

import co.com.cliente.Services;
import co.com.cliente.asteroide.estuctura.AsteroideDS;
import co.com.cliente.asteroide.estuctura.AsteroideRecord;

import co.com.entities.Asteroide;
import co.com.entities.Descubridor;
import co.com.entities.DescubridorPK;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.ButtonItem;
import com.smartgwt.client.widgets.form.fields.SelectItem;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author dloaiza
 */
public class ActualizarAsteroide extends Window{
    
    private SelectItem cbxAsteroide;
    private AsteroideDS asteroideDS;
    private DynamicForm frmAsteroides;
    private ButtonItem btnGuardar;
    
    public ActualizarAsteroide(final Descubridor descubridor){
        setShowModalMask(false);
        centerInPage();
        setWidth(280);
        setHeight(80);
        asteroideDS = new AsteroideDS();
        
        btnGuardar = new ButtonItem("Guardar");

       
        cbxAsteroide = new SelectItem();
        cbxAsteroide.setTitle("Asteroide");
        cbxAsteroide.setName("cbxAsteroide");
        cbxAsteroide.setRequired(true);
        cbxAsteroide.setWidth(200);
        cbxAsteroide.setDisplayField(AsteroideDS.NOMBRE);
        cbxAsteroide.setValueField(AsteroideDS.IDASTEROIDE);

        frmAsteroides = new DynamicForm();
        frmAsteroides.setNumCols(4);
        frmAsteroides.setItems(cbxAsteroide, btnGuardar);
        
       
        btnGuardar.addClickHandler(new com.smartgwt.client.widgets.form.fields.events.ClickHandler() {

            public void onClick(com.smartgwt.client.widgets.form.fields.events.ClickEvent event) {
                Asteroide asteroide = cbxAsteroide.getSelectedRecord().getAttributeAsObject("asteroideData")==null?null:(Asteroide)cbxAsteroide.getSelectedRecord().getAttributeAsObject("asteroideData");
                if(asteroide != null){
                    descubridor.setAsteroide(asteroide);
                    Services.getDescubridoresServices().modificarDescubridor(descubridor, new AsyncCallback<Void>() {

                        public void onFailure(Throwable caught) {
                            SC.say("El descubrimiento no pudo ser actualizado");
                            destroy();
                        }

                        public void onSuccess(Void result) {
                            SC.say("El descubrimiento fue actualizado correctamente");
                            destroy();
                        }
                    });
                }
            }
        });
        addMember(frmAsteroides);
        cargarAsteroides();
        
        setCanDrag(false);
        setShowResizer(false);
        setTitle("Actualizar asteroide descubrimiento");
        show();
    }
    
    public void cargarAsteroides() {
        Services.getAsteroideServices().consultarAsteroides(new AsyncCallback<List<Asteroide>>() {

            public void onFailure(Throwable caught) {
                       Logger.getLogger(getClass().getName()).log(Level.INFO, "Mensaje informativo...no se cargaron los cargos de empleados: " + caught.getMessage());
            }

            public void onSuccess(List<Asteroide> result) {
                for (int i = 0; i < result.size(); i++) {
                    asteroideDS.addData(new AsteroideRecord(result.get(i)));
                }
                cbxAsteroide.setOptionDataSource(asteroideDS);
            }
        });
    }
}
